<?php
//http://blog.51yip.com/cache/1439.html
$redis = new Redis();

/*
 * connect
 * 描述:实例连接一个redis
 * 参数:host:string port int
 * 返回值:bool成功返回 true:成功  false:失败
 * */
$redis->connect('127.0.0.1',6379);

/*
 * set
 *描述:设置key和value的值
 * 参数 key value
 * 返回值:bool 成功返回:true:成功 false 失败
 * */
#$result = $redis->set('test','liuhao');

/*
 * get
 * 描述：获取有关指定键的值
 * 参数:key
 * 返回值:string或着bool如果不存在,则返回false,否则,返回指定键对应的value值
 * */
#$result = $redis->get('test');


/*
 * delete
 * 描述：删除指定的键
 * 参数：一个键,或者不确定数目的参数,每一个关联的数组：key1 key2 key3
 * */
#@$redis->delete('test');
#var_dump($redis->get('test'));

/*
 * setnx
 * 描述:如果数据库中不存在该键,则设置关键字参数,如果存在,就不会设置就不会调用此方法
 * 参数:key value
 * 返回值 bool 成功返回：true   失败返回:false
 * */
//$redis->set('test','liuhao');
//$redis->setnx('test','liuhouse');
//echo $redis->get('test');
//@$redis->delete('test');
//$redis->setnx('test','sunyanzi');
//echo $redis->get('test');



/*
 * exists
 * 描述：验证指定的键是否存在
 * 参数：key
 * 返回值：bool 成功返回 true   失败返回   false
 * */
//$redis->set('test','sunyanzi');
//var_dump($redis->exists('test'));

/*
 * incr
 * 数字递增存储
 * key value : 将被添加到键的值
 * 返回值: int the new value
 * */
//$redis->set('test',10);
//var_dump($redis->incr('test'));
//var_dump($redis->incr('test'));


/*
 * decr
 * 描述：数字递减存储键值
 * 参数：key value ： 将被添加到键的值
 * 返回值 int the new value
 * */
//$redis->set('test1',10);
//var_dump($redis->decr('test1'));
//var_dump($redis->decr('test1'));



/*
 * getMultiple
 * 描述：取得所以指定键的值,如果一个或者多个键不存在,该数组中的该键值为假
 * 参数：其中包含键值的列表数组
 * 返回：返回包含所有键的值的数组
 * */
//$redis->set('test1',1);
//$redis->set('test2',2);
//@$result = $redis->getMultiple(['test1','test2','test3']);
//print_r($result);


/*
 * lpush
 * 描述：由列表头部添加字符串值,如果不存在该键则创建该列表,如果键存在,而且不是一个一列表，则返回false
 * 参数: key,value
 * 返回值：成功返回数组的长度,失败返回false
 * */
//@$redis->delete('test');
//var_dump($redis->lPush('test',1));
//var_dump($redis->lPush('test',222));


/*
 * rpush
 * 描述：由列表尾部添加 字符串值,如果不存在该键就创建该键的列表,如果该键存在并且不是一个列表,就返回false
 * 参数:key,value
 * 返回值：成功之后返回数组的长度,失败返回false
 * */
//@$redis->delete('test');
//var_dump($redis->lPush('test','1111'));
//var_dump($redis->lPush('test','2222'));
//var_dump($redis->rPush('test','3333'));
//var_dump($redis->rPush('test','4444'));


/*
 * lpop
 * 描述：返回和移除列表的第一个元素
 * 参数:key
 * 返回值：成功返回第一个元素的值,失败返回false
 * */
//@$redis->delete('test3');
//$redis->lPush('test3','111');
//$redis->lPush('test3','222');
//$redis->rPush('test3','333');
//$redis->rPush('test3','444');
//var_dump($redis->lPop('test3'));


/*
 *rpop
 * 描述：返回和移除列表的最后一个元素
 * 参数 : key
 * 返回值:成功返回最后一个元素的值,失败返回false
 * */
//@$redis->delete('test3');
//$redis->lPush('test3','1111');
//$redis->lPush('test3','2222');
//$redis->rPush('test3','3333');
//$redis->rPush('test3','4444');
//var_dump($redis->rPop('test3'));

/*
 * lsize,llen
 * 描述：返回列表的长度,如果列表不存在或者为空的时候,该命令返回0，如果该键不是列表则返回false
 * 参数：key
 * 返回值:成功返回数组的长度，失败返回false
 * */
//@$redis->delete('test3');
//$redis->lPush('test3','1111');
//$redis->lPush('test3','2222');
//$redis->rPush('test3','3333');
//$redis->rPush('test3','4444');
//var_dump(@$redis->lSize('test3'));
//var_dump($redis->lLen('test3'));


/*
 * lget
 * 描述：返回指定键存储在列表中指定的元素,0：第一个元素,1:第二个...-1最后一个,-2倒数第二...错误的索引或者键不指向列表的时候返回false
 * 参数：key index
 * 返回值：成功返回指定元素的值,失败返回false
 * */
//@$redis->delete('test3');
//$redis->lPush('test3','111');
//$redis->lPush('test3','222');
//$redis->rPush('test3','333');
//$redis->rPush('test3','444');
//var_dump(@$redis->lGet('test3',1));


/*
 * lset
 * 描述：为列表指定的索引赋予新的值,如果不存在该索引则返回false
 * 参数:key index value
 * 返回值：成功返回true   失败返回false
 * */
//@$redis->delete('test3');
//$redis->lPush('test3','111');
//$redis->lPush('test3','222');
//var_dump(@$redis->lGet('test3',1));
//var_dump($redis->lSet('test3',1,'333'));
//var_dump(@$redis->lGet('test3',1));


/*
 * lgetrange
 * 描述:
 * 返回在该区域中指定键列表中开始到结束存储的指定元素,lgetrange(key,start,end)
 * 0:是第一个元素,1：是第二个 -1是最后一个  -2是倒数第二个
 * 参数：key start end
 * 返回值：成功返回查找的值，失败返回false
 * */
//@$redis->delete('test3');
//$redis->lPush("test3","111");
//$redis->lPush("test3","222");
//print_r(@$redis->lGetRange('test3',0,-1));



/*
 * lremove
 * 描述：从列表中头部开始移除count个匹配的值,如果count为0,所有匹配的元素都将被删除,如果count是负数,内容从尾部开始删除
 * 参数: key count value
 * 返回值 成功返回删除的个数,失败返回false
 * */
//@$redis->delete('test3');
//$redis->lPush('test3','a');
//$redis->lPush('test3','b');
//$redis->lPush('test3','c');
//$redis->rPush('test3','a');
//print_r(@$redis->lGetRange('test3',0,-1));
//var_dump(@$redis->lRemove('test3','a',2));
//print_r(@$redis->lGetRange('test3',0,-1));


/*
 * sadd
 * 描述：为一个key添加一个值,如果这个值存在这个key中,则返回false
 * 参数: key value
 * 返回值,成功的时候返回true 失败的时候返回false
 * */
//@$redis->delete('test4');
//var_dump($redis->sAdd('test4','111'));
//var_dump($redis->sAdd('test4','222'));
//var_dump($redis->sAdd('test4','222'));
//print_r($redis->sort('test4'));



/*
 * sremove
 * 描述：删除key指定的value值
 * 参数:key number
 * 返回值:true or false
 * */
//@$redis->delete('test5');
//$redis->sAdd('test5','111');
//$redis->sAdd('test5','222');
//@$redis->sRemove('test5','111');
//print_r($redis->sort('test5'));


/*
 * smove
 * 描述：将key1中的value移动到key2中
 * 参数:srcKey dstKey member
 * 返回值：true or false
 * */
//@$redis->delete('smove');
//@$redis->delete('smove1');
//$redis->sAdd('smove','111');
//$redis->sAdd('smove','222');
//$redis->sAdd('smove1','333');
//$redis->sAdd('smove1','444');
//$redis->sMove('smove','smove1','111');



/*
 * scontains
 * 描述：检查集合中是否存在指定的值
 * 参数：key value
 * 返回值:true or false
 *
 * */
//@$redis->delete('scontains');
//$redis->sAdd('scontains','111');
//$redis->sAdd('scontains','112');
//$redis->sAdd('scontains','113');
//var_dump(@$redis->sContains('scontains','111'));


/*
 * ssize
 * 描述：返回集合中存储值的数量
 * 参数:key
 * 返回值：成功返回数组的个数，失败0
 *
 * */
//@$redis->delete('ssize');
//$redis->sAdd('ssize','111');
//$redis->sAdd('ssize','222');
//echo @$redis->sSize('ssize');


/*
 * spop
 * 描述：随机移除并且返回key中的一个值
 * 参数:key
 * 返回值:成功返回删除的值,失败返回false
 * */
//@$redis->delete('spop');
//$redis->sAdd('spop','111');
//$redis->sAdd('spop','222');
//$redis->sAdd('spop','333');
//var_dump($redis->sPop('spop'));



/*
 * sinter
 * 描述：返回一个所有指定键的交集,如果只是一个键,那么这个命令生成这个集合的成员，如果不存在某个键，则返回false
 * 参数：key1 key2 keyN
 * 返回值：成功返回数组的交集,失败返回false
 *
 * */
//@$redis->delete('sinter');
//@$redis->delete('sinter1');
//$redis->sAdd('sinter','111');
//$redis->sAdd('sinter','222');
//$redis->sAdd('sinter','333');
//$redis->sAdd('sinter1','111');
//$redis->sAdd('sinter1','444');
////sINter获取交集
//var_dump($redis->sInter('sinter','sinter1'));


/*
 * sinterstore
 * 描述:执行sinter命令并吧结果储存到新建的变量中
 * 参数：
 *Key: dstkey, the key to store the diff into.
Keys: key1, key2… keyN. key1..keyN are intersected as in sInter.
返回值：成功返回，交集的个数，失败false
 * 返回值】
 *
 * */
//@$redis->delete('sinter');
//@$redis->delete('sinter1');
//$redis->sAdd('sinter','111');
//$redis->sAdd('sinter','222');
//$redis->sAdd('sinter','333');
//$redis->sAdd('sinter1','111');
//$redis->sAdd('sinter1','444');
////获取两个的交集
//var_dump($redis->sInterStore('new',"sinter",'sinter1'));


/*
 * sunion
 * 描述：返回一个所有指定键的并集
 * 参数:key1,key2,key3...keyN
 * 返回值：成功返回合并后的交集,失败返回false
 * */
//@$redis->delete('sinter');
//@$redis->delete('sinter1');
//$redis->sAdd('sinter','111');
//$redis->sAdd('sinter','222');
//$redis->sAdd('sinter','333');
//$redis->sAdd('sinter1','111');
//$redis->sAdd('sinter1','444');
//print_r($redis->sUnion("sinter","sinter1"));


/*
 * sunionstore
 * 描述：执行sunion命令并把结果存储到新的变量中
 * Key: dstkey, the key to store the diff into.
 * Keys: key1, key2… keyN. key1..keyN are intersected as in sInter.
 * 返回值：成功返回，交集的个数，失败返回false
 * */
//@$redis->delete('sinter');
//@$redis->delete('sinter1');
//$redis->sAdd('sinter','111');
//$redis->sAdd('sinter','222');
//$redis->sAdd('sinter','333');
//$redis->sAdd('sinter1','111');
//$redis->sAdd('sinter1','444');
//var_dump($redis->sUnionStore('newunion','sinter','sinter1'));
////smembers获取指定键的所有的数据
//print_r($redis->sMembers('newunion'));



/*
 * sdiff
 * 描述：返回第一个集合中存在并在其他集合中不存在的结果
 * Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis.
 * 返回值:成功返回数组,失败返回false
 *
 * */
//@$redis->delete('sinter');
//@$redis->delete('sinter1');
//$redis->sAdd('sinter','111');
//$redis->sAdd('sinter','222');
//$redis->sAdd('sinter','333');
//$redis->sAdd('sinter1','111');
//$redis->sAdd('sinter1','444');
//print_r($redis->sDiff('sinter','sinter1'));


/*
 * sdiffstore
 * 描述：执行sdiff命令并把结果存储到新键的变量中
 * Key: dstkey, the key to store the diff into.
 * Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis
 * 返回值：成功返回数字,失败返回false
 * */
//@$redis->delete('sinter');
//@$redis->delete('sinter1');
//$redis->sAdd('sinter','111');
//$redis->sAdd('sinter','222');
//$redis->sAdd('sinter','333');
//$redis->sAdd('sinter1','111');
//$redis->sAdd('sinter1','444');
//var_dump($redis->sDiffStore('new_store','sinter','sinter1'));


/*
 * smembers , sgetmembers
 * 描述：返回集合的内容
 *
 * */
@$redis->delete('meme');
$redis->sAdd('meme','111');
$redis->sAdd('meme','222');
print_r($redis->sMembers('meme'));




















